package com.hanamaki.demo02;

import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class Appium01 {
    static AndroidDriver<WebElement> driver;
    @BeforeMethod
    public void setUp() throws MalformedURLException {
//        1. 创建配置对象   new
        DesiredCapabilities cp = new DesiredCapabilities();
//          添加配置信息
        cp.setCapability("deviceName", "127.0.0.1:62001");
        cp.setCapability("platformName", "Android");
        cp.setCapability("appPackage", "com.handsgo.jiakao.android");
        cp.setCapability("appActivity", "com.handsgo.jiakao.android.splash.Login");
//        如何启动？
//        驱动 对象
        URL url = new URL("http://localhost:4723/wd/hub");
//        注册 需要打开的 驱动 以及url 以及 对应的软件
        driver = new AndroidDriver<>(url, cp);

//       为 全局元素 添加  隐式等待时间  30
        WebDriver.Timeouts timeouts = driver.manage().timeouts();
        timeouts.implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void test() throws InterruptedException {

//        通过 ID的方式 点击  元素 点击  同意并继续
        WebElement elementById = driver.findElementById("com.handsgo.jiakao.android:id/btn_agree");
        elementById.click();
//        driver.findElement(By.id("com.handsgo.jiakao.android:id/btn_disagree"));

//         点击 不在提醒  com.handsgo.jiakao.android:id/permission_bg
        driver.findElement(By.id("com.handsgo.jiakao.android:id/permission_bg")).click();

//        点击  知道了  com.handsgo.jiakao.android:id/permission_btn
        driver.findElement(By.id("com.handsgo.jiakao.android:id/permission_btn")).click();

//         判断 弹窗是否出现
//          com.android.packageinstaller:id/permission_allow_button
        String alert = "com.android.packageinstaller:id/permission_allow_button";
        boolean flag = byElement(By.id(alert));
        if (flag) {
            driver.findElement(By.id(alert)).click();
        }



//        点击  选择 城市   com.handsgo.jiakao.android:id/cityTv
        driver.findElement(By.id("com.handsgo.jiakao.android:id/cityTv")).click();


//        在 选择的城市中 元素没有 id  通过 text 的属性值 来 点击
//        如果 想要 点击 text 元素的属性值  要通过 appium中原生的方式来点击
//        driver.findElementByAndroidUIAutomator("new UiSelector().text(\"上海\")").click();

//        使用  xpath 方式 获取 文本框
//        driver.findElement(By.xpath("//android.widget.EditText")).sendKeys("上");


//        使用  id方式 点击 地区
//        如果  id存在 多个  ,会默认点击 第一个
//        通过  findElement 来查找 只会默认选择 第一个
//        driver.findElement(By.id("com.handsgo.jiakao.android:id/item_title")).click();

//        使用  集合的方式 点击上饶
//        List<WebElement> areasList = driver.findElements(By.id("com.handsgo.jiakao.android:id/item_title"));
////      遍历打印所有的  地区
//        for (WebElement area : areasList) {
//            System.out.println(area.getText());
//        }
////        点击 集合 中的  第二个元素  上饶
//        areasList.get(1).click();

//        使用 xpath的 方式 点击 阿拉善盟
        driver.findElement(By.xpath("//android.widget.TextView[@text='阿拉善盟']")).click();
    }

    public static boolean byElement(By by) {
//         ctrl + alt +t
        try {
            driver.findElement(by);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @AfterMethod
    public void release() {
//        driver.quit();
    }

}
